home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / mus / play / DeliTracker1_37.lha / DeliTracker / Docs / DeliTracker.dok < prev    next >
Text File  |  1993-05-07  |  57KB  |  1,514 lines

  1. ***************************************************************************
  2. *                DeliTracker                  *
  3. ***************************************************************************
  4.  
  5.                 © 1992 by Delirium
  6.              $VER: V1.37 (03.04.1993)
  7.  
  8.  
  9.  
  10. 1. INHALTSVERZEICHNIS
  11.  
  12.     1.INHALTSVERZEICHNIS
  13.  
  14.     2.RECHTLICHES UND VERTRIEB
  15.  
  16.     3.EINLEITUNG
  17.       3.1 Was ist DeliTracker ?
  18.       3.2 Wieso gerade DeliTracker benutzen ?
  19.  
  20.     4. START VON DELITRACKER
  21.       4.1 Systemanforderungen
  22.       4.2 Start vom CLI bzw. von der Shell
  23.       4.3 Start von der Workbench
  24.       4.4 Installation
  25.  
  26.     5. GRUNDKONZEPTE
  27.       5.1 Player
  28.       5.2 gepackte Module
  29.       5.3 Optionen und Voreinstellungen
  30.       5.4 Das Konfigurationsfile
  31.  
  32.     6. DIE STEUERUNG VON DELITRACKER
  33.       6.1 Das Kontroll Fenster
  34.         6.1.1 Gadgets
  35.         6.1.2 Menus
  36.         6.1.3 Shortcuts
  37.         6.1.4 Appwindow
  38.       6.2 Das Setup Fenster
  39.         6.2.1 Gadgets
  40.         6.2.2 Shortcuts
  41.       6.3 ARexx
  42.       6.4 Commodities
  43.  
  44.     7. PROBLEMECKE
  45.  
  46.     8. DIE PROGRAMIERUNG EXTERNER PLAYER
  47.       8.1 Das externe Player Konzept
  48.         8.1.1 Schematischer Aufbau von externen Playern
  49.         8.1.2 Schematischer Aufbau von Custom Modulen
  50.       8.2 Anpassung von Playern
  51.         8.2.1 Playerheader
  52.         8.2.2 Modulerkennung
  53.         8.2.3 Interrupts
  54.       8.3 Bedeutung der Tags
  55.       8.4 DeliTracker support Funktionen
  56.       8.5 Tips zur Anpassung
  57.  
  58.     9. DANKSAGUNGEN
  59.  
  60.  
  61.  
  62. 2. RECHTLICHES UND VERTRIEB
  63.  
  64.        DeliTracker (c) 1991 - 1993 by Peter Kunath und Frank Riffel.
  65.  
  66.   DeliTracker ist Shareware. Das heißt, wenn Ihnen dieses Programm gefällt
  67.   und Sie es öfters benutzen, erwarten wir von Ihnen, daß Sie sich bei uns
  68.   registrieren lassen. Die Sharewaregebühr beträgt 20 DM bzw. $US 20 und ist
  69.   in BAR oder als EUROCHEQUE zu entrichten. Leider ist es uns nicht möglich,
  70.   andere Schecks (insbesondere Amerikanische) zu akzeptieren. Als Gegen-
  71.   leistung erhalten Sie die neueste Version auf Disk. Durch Ihren Beitrag
  72.   helfen Sie mit, die ständige Verbesserung dieses Tools zu sichern. Schicken
  73.   Sie die ausgefüllte Registrierkarte (Orderform) und den Betrag an:
  74.  
  75.                    Frank Riffel
  76.                 Merkstr. 27
  77.                   8129 Wessobrunn
  78.                   Germany
  79.  
  80.   An diese Adresse können Sie auch schreiben, falls Sie irgendwelche Bugs
  81.   finden oder Vorschläge und Bemerkungen zu diesem Programm haben. Wenn Sie
  82.   ein neues Soundsystem geschrieben haben und Interesse an der Anpassung
  83.   an DeliTracker haben, können Sie sich natürlich auch an uns wenden.
  84.  
  85.   DeliTracker darf auf Public-Domain-, Shareware-Disketten und Netzwerken
  86.   vertrieben und verbreitet werden, solange folgende Bedingungen
  87.   eingehalten werden:
  88.  
  89.     ° alle Dateien müssen komplett weitergegeben werden. Die zu
  90.       DeliTracker gehörenden Dateien sind in 'Distribution' aufgelistet.
  91.  
  92.     ° Programm und Dokumentation dürfen in keiner Weise geändert werden.
  93.       Eine Ausnahme stellt das Packen dar, wenn sich der Orginalzustand
  94.       wieder zu 100% herstellen läßt (z.B. mit LhA).
  95.  
  96.     ° Der Gesamtpreis für Disketten, auf denen DeliTracker enthalten ist,
  97.       und die Übertragungsgebühren in Netzwerken dürfen nicht höher als
  98.       8 DM bzw. $US 6 oder einen gleichwertigen Betrag in einer anderen
  99.       Währung sein.
  100.  
  101.     ° Jegliche kommerzielle Nutzung, insbesondere die Verbreitung von
  102.       DeliTracker zusammen mit kommerziellen Produkten, bedarf einer
  103.       schriftlichen Genehmigung der Autoren.
  104.  
  105.   Die Autoren übernehmen keinerlei Haftung für Schäden, die durch die
  106.   Benutzung dieses Programms entstehen. Wir weisen in diesem Zusammenhang
  107.   aber darauf hin, daß DeliTracker sorgfältig entwickelt und getestet wurde.
  108.  
  109.  
  110. 3. EINLEITUNG
  111.  
  112.   3.1 Was ist DeliTracker ?
  113.  
  114.   DeliTracker ist ein flexibler Soundplayer, der viele verschiedene Sound-
  115.   formate abspielen kann. Man sollte ihn nicht mit einen Songeditor, MIDI-
  116.   sequenzer oder Digitizer verwechseln. Er ist ausschließlich dazu gedacht,
  117.   komfortabel Musik abzuspielen. Die Player für die Unterstützung von
  118.   SoundTracker 15 instruments, SoundTracker 31 instruments, StarTrekker
  119.   ohne AM Sounds, NoiseTracker, ProTracker und Customplay Modulen sind
  120.   bereits intern eingebaut. Weitere Player können bei Bedarf nachgeladen
  121.   werden. Das bedeutet, daß man sehr schnell, einfach und bequem neue Player
  122.   hinzufügen kann.
  123.  
  124.  
  125.   3.2 Wieso gerade DeliTracker benutzen ?
  126.  
  127.   Es gibt eine Vielzahl von Gründen, DeliTracker zu verwenden, dazu zählen:
  128.  
  129.     ° läuft zuverlässig im Multitasking
  130.     ° belegt die Soundkanäle
  131.     ° hat ein ARexx - Interface
  132.     ° korrekte Abspielgeschwindigkeit auch auf NTSC-Geräten
  133.     ° verträgt sich mit dem serial.device
  134.     ° unterstützt mit xpk gecrunchte Soundfiles
  135.     ° verwaltet bis zu 80 Player
  136.     ° läuft auf Turbokarten
  137.     ° hat ein Configurationsfile
  138.     ° enforcer und mungwall getestet
  139.     ° volle Unterstützung von CLI und Workbench (Tooltypes)
  140.     ° kinderleichte Bedienung durch ansprechende Oberfläche
  141.     ° Volume/Balance - Regler
  142.     ° Mulitselect von Files
  143.     ° Resident Startup vom CLI
  144.     ° vollständige PubScreen Unterstützung
  145.     ° Aktivierung per Hotkey (Commodity)
  146.     ° Module können auch gespielt werden, indem ihr Icon in das
  147.       Kontrollfenster abgelegt wird (Appwindow).
  148.     ° wurde zu 100% in Assembler geschrieben
  149.  
  150.  
  151. 4. START VON DELITRACKER
  152.  
  153.   4.1 Systemanforderungen
  154.  
  155.   DeliTracker erfordert ab Version 1.31 mindestens Kickstart und Workbench
  156.   2.04. Wir empfehlen jedoch die Verwendung von Workbench 2.1 (bzw. 3.0).
  157.   Bei diesen Versionen ist der ASL Filerequester wesentlich verbessert
  158.   worden unterstützt nun auch Multiselect. Wenn gepackte Module abgespielt
  159.   werden sollen, müssen zusätzlich die 'xpkmaster.library' und die
  160.   entsprechenden Sub-Libraries installiert sein. Der Grundbedarf an
  161.   Speicher ist etwa 70KB, dazu kommt dann noch der Speicher für evtl.
  162.   zusätzlich geladene Player, die Modulliste und das entpackte Soundfile.
  163.   Natürlich sollte Ihr Amiga an einem Monitor mit Lautsprechern oder besser
  164.   noch an einer Stereo Anlage angeschlossen sein.
  165.  
  166.  
  167.   4.2 Start vom CLI bzw. von der Shell.
  168.  
  169.   Öffnen sie ein CLI- oder Shellfenster und gehen Sie mittels des 'CD'
  170.   Befehls in das Verzeichnis, in dem sich DeliTracker befindet. Geben Sie
  171.   jetzt 'DeliTracker' ein (ohne die Hochkommata !) und drücken Sie die
  172.   Return-Taste. DeliTracker wird nun geladen und gestartet. Da DeliTracker
  173.   sich selbst vom CLI löst, muß er nicht mit 'run' oder 'runback' gestartet
  174.   werden, um das CLI-Window wieder schließen zu können. Alle unter 5.4
  175.   erläuterten Optionen können beim Start angegeben werden. Bei falschen
  176.   Eingaben oder ungültigen Optionen wird ein Hilfstext ausgegeben.
  177.  
  178.   Beispiel: 'DeliTracker config DT.config volume 32 filter no'
  179.  
  180.   Startet DeliTracker mit dem Konfigurationsfile 'DT.config', schaltet den
  181.   Lowpass Filter ab (nicht beim A1000) und setzt die Lautstärke auf 32.
  182.  
  183.  
  184.   4.3 Start von der Workbench
  185.  
  186.   Öffnen Sie den Ordner, in dem sich DeliTracker befindet und starten Sie
  187.   das Programm durch einen Doppelklick auf dessen Icon. Mit dem 'Info'-item
  188.   aus dem Workbench- bzw. Iconmenu (je nach Kickstart) können alle unter
  189.   5.4 erklärten Optionen als ToolTypes eingetragen werden. Dabei ist jedoch
  190.   zu beachten, daß die Optionen von den Argumenten durch '=' getrennt
  191.   werden. Ungültige Optionen werden beim Start von der Workbench ignoriert.
  192.   DeliTracker kann natürlich auch als 'Default Tool' angegeben werden.
  193.  
  194.   Beispiel:    Config=DT.config
  195.         PrefWinXY=0/11
  196.         Volume=43
  197.         CX_Popup=NO
  198.  
  199.   Diese Tooltypes bewirken, daß als Konfigurationsdatei 'DT.config'
  200.   geladen und die Lautstärke auf 43 gesetzt wird. Die Koordinaten für
  201.   das Setupfenster werden auf Position 0/11 gestellt. Das Kontrollfenster
  202.   wird überhaupt nicht geöffnet.
  203.  
  204.  
  205.   4.4 Installation
  206.  
  207.   Falls Sie schon im Besitz einer älteren Version von DeliTracker sind,
  208.   sollten Sie diese (bis auf evtl. selbstgeschriebene Player) vor der
  209.   Installation der neuen Version komplett löschen.
  210.  
  211.   Kopieren Sie dann DeliTracker in ein Verzeichnis Ihrer Wahl. In dieses
  212.   Verzeichnis müssen Sie jetzt nur noch die 'DeliPlayers' Schublade
  213.   kopieren. Wir schlagen vor, daß Sie selten oder (noch) nicht benötigte
  214.   Player von DeliPlayers/ nach DeliPlayers/PlayerStore/ kopieren. Sie
  215.   können die Player dann bei Bedarf nachladen. Hinweis: Jeder Player,
  216.   der sich direkt im 'DeliPlayers' Verzeichnis befindet, wird beim Start
  217.   automatisch geladen. Das heißt aber auch, daß er Speicher benötigt.
  218.   Wenn Sie gepackte Module besitzen müssen Sie noch die XPK Libraries
  219.   installieren. Sollten sie sich noch nicht in Ihrem LIBS: Verzeichnis
  220.   befinden, können Sie diese automatisch installieren lassen. CopyLibs
  221.   kopiert nach einem Doppelklick auf das Icon die powerpacker.library
  222.   und die XPK Libraries nach LIBS:.
  223.  
  224.  
  225. 5. GRUNDKONZEPTE
  226.  
  227.   5.1 Player
  228.  
  229.   Mit DeliTracker ist es möglich, einzelne Player nachzuladen. Ist ein
  230.   solcher Player geladen worden, erkennt und spielt DeliTracker die Module,
  231.   die von diesem Player unterstützt werden. Derzeit können maximal 80
  232.   externe Player nachgeladen werden. Dies sollte jedoch erst mal für eine
  233.   Weile reichen. Beim Start von DeliTracker werden alle Player, die sich im
  234.   Verzeichnis 'DeliPlayers' (b.z.w im Configfile gespeicherten Playerpfad)
  235.   befinden, geladen. Zusätzlich haben Sie jederzeit die Möglichkeit einen
  236.   weiteren bzw. neueren Player nachzuladen. Dieses Playerkonzept ist legt
  237.   den Grundstein für die große Flexibilität von DeliTracker. Einer der
  238.   Vorteile davon ist, daß der Benutzer eine einheitliche Oberfläche
  239.   anspricht, um die unterschiedlichsten Musikformate abzuspielen. Soweit
  240.   dies möglich ist, bleiben die gesamten Möglichkeiten von DeliTracker
  241.   voll erhalten. Die ist z.B. besonders nützlich im Zusammenhang von Multi-
  242.   Media Anwendungen und ARexx. Um Speicher zu sparen ist es möglich, die
  243.   benötigten Player erst bei Bedarf zu laden b.z.w unbenutzte Player wieder
  244.   zu entfernen. Durch die nachladbaren Player ist es wesentlich einfacher
  245.   und schneller möglich, neue Entwicklungen (Verbesserungen alter Player,
  246.   Anpassung neuer Player) zu verbreiten. Das Player Interface gibt dem
  247.   Anwender außerdem die Möglichkeit, selbst externe Player zu schreiben.
  248.   Im Augenblick sind ProTracker/NoiseTracker/SoundTracker15/SoundTracker31
  249.   und StarTrekker ohne AM Sounds bereits intern in DeliTracker enthalten.
  250.   CustomPlay ist ebenfalls ein interner Player, der für spezielle Module,
  251.   die ihren Player bereits beinhalten, geschaffen wurde. Dabei ist zu
  252.   beachten, daß diese Module nicht gepackt werden dürfen, weil sie, um eine
  253.   Relozierung zu ermöglichen, mit LoadSeg() geladen werden! Alle externen
  254.   Player sind in 'Player.dok' aufgelistet.
  255.  
  256.  
  257.   5.2 gepackte Module
  258.  
  259.   Falls die xpkmaster.library V2 oder höher installiert ist, benutzt
  260.   DeliTracker deren Entpackroutinen. Ob Sie Soundmodule packen dürfen,
  261.   können Sie im PlayerInfo-Feld erfahren. Wenn dort 'Packable....NO'
  262.   steht, darf das Soundmodul auf keinen Fall gepackt werden, sonst wird
  263.   von DeliTracker nicht mehr erkannt. Bei 'Packable....YES' unterstützt
  264.   der jeweilige Player mit größter Wahrscheinlichkeit gepackte Module.
  265.   Zumindest kann in JEDEM Fall das von Ihnen angewählte File gepackt
  266.   werden. Werden von diesem Player weitere Dateien nachgeladen, dürfen
  267.   Sie diese möglicherweise nicht mehr packen. Lesen Sie dazu die zugehörige
  268.   DeliPlayer Dokumentation.
  269.  
  270.   Hinweis: Custommodule dürfen nicht gepackt werden, da sie im Gegensatz
  271.   zu normalen Files nicht mit Read() sondern mit LoadSeg() geladen werden
  272.   (Relozierung des Playercodes) ! Eine möglichkeit Custom-Module dennoch
  273.   zu packen ist die verwendung des XFH Filehandlers.
  274.  
  275.  
  276.   5.3 Optionen und Voreinstellungen
  277.  
  278.   Um eine flexible Konfiguration von DeliTracker zu erlauben, wurden
  279.   folgende Optionen eingeführt. Diese Optionen werden von DeliTracker als
  280.   KEYWORDS in TOOLTYPES, CLI Templates und in Konfigurationsdateien benutzt.
  281.   Die Groß- oder Kleinschreibung der Optionen ist unwichtig!
  282.  
  283.  
  284.   Option          Defaultwert und Beschreibung
  285.   -------------------      ----------------------------
  286.  
  287.   cx_priority <pri>      0 bzw. normale Priorität
  288.               Setzt die Priorität, mit der DeliTracker als
  289.               Commodity geführt wird. Gültige Werte sind
  290.               -128 bis 127.
  291.  
  292.   cx_popup <yes|no>      yes bzw. Fenster offen
  293.               Legt fest, ob das Kontrollfenster beim Start
  294.               geöffnet wird. Wird 'no' angegeben bleibt das
  295.               Kontrollfenster geschlossen. Es kann bei Bedarf
  296.               dann mittels Hotkey, Commodities Exchange oder
  297.               ARexx geöffnet werden.
  298.  
  299.   cx_popkey <string>      "" d.h. kein Hotkey
  300.               Hiermit läßt sich ein beliebiger Hotkey zum
  301.               Öffnen und Schließen des Kontrollfensters
  302.               angeben. Ein Schließen des Kontrollfensters über
  303.               Hotkey schließt automatisch auch das Setup
  304.               Fenster. Gleiches gilt auch für Hide Interface.
  305.               Um einen Hotkey zeitweilig abzuschalten, kann
  306.               DeliTracker im Commodities Exchange Programm
  307.               auf INACTIVE gestellt werden.
  308.  
  309.   config <Datei>      "ENV:DeliTracker.config"
  310.               Lädt die angegebene Datei beim Start als
  311.               Konfigurationsdatei.
  312.               Hinweis: Diese Option kann in Konfigurations-
  313.               dateien nicht angegeben werden !
  314.  
  315.   module <Datei>      Keine Datei bzw. die Modulliste ist leer.
  316.               Fügt die angegebene Datei in die Modulliste ein.
  317.  
  318.   pubscreen <Screen>      "", d.h. der default PubScreen (meist Workbench)
  319.               Setzt den Namen für den PublicScreen, auf dem
  320.               sich DeliTracker öffnen soll. Wenn der angegebene
  321.               Screen nicht verfügbar ist (z.B. nicht existiert),
  322.               dann öffnet sich DeliTracker auf dem derzeitigen
  323.               default PublicScreen.
  324.               Hinweis: Screennamen sind case-sensitive !
  325.  
  326.   playerpath <Pfad>      "DeliPlayers"
  327.               Legt den Pfad fest, aus dem DeliTracker die
  328.               externen Player nachlädt.
  329.  
  330.   windowxy<XPos>/<YPos>      0/0
  331.               Das Kontrollfenster wird an der neuen Position
  332.               geöffnet. Gelingt dies nicht, so öffnet sich das
  333.               Fenster bei 0/0.
  334.  
  335.   prefwinxy<XPos>/<YPos>  0/1
  336.               Das Setupfenster wird an der gewünschten Position
  337.               geöffnet. Schlägt dies fehl, so öffnet sich das
  338.               Fenster bei 0/1.
  339.  
  340.   volume <Volume>      64 (volle Lautstärke)
  341.               Setzt die Lautstärke auf den angegebenen Wert.
  342.               Werte werden im Bereich von 0 bis 64 akzeptiert.
  343.  
  344.   balance <Balance>      0 (ausgewogene Balance)
  345.               Die Balance wird auf den angegebenen Wert
  346.               gesetzt. Werte von -64 (nur links) bis 64 (nur
  347.               rechts) sind gültig.
  348.  
  349.   reqlines <Nummer>      0 (Standardeinstellung des Requesters)
  350.               Legt die Anzahl der Zeilen im Filerequester fest.
  351.  
  352.   subsong <Nummer>      0 bzw. erster Subsong
  353.               Falls das erste Modul in der Liste Subsongs
  354.               unterstützt, wird nicht der erste sondern der
  355.               angegebene Subsong gespielt.
  356.  
  357.   playing <yes|no>      yes bzw. Modul wird geladen
  358.               Legt fest, ob nach dem Start das erste Modul in
  359.               der Liste geladen werden soll.
  360.               Hinweis: Ob das Modul nach dem Laden sofort ge-
  361.               spielt wird, hängt von 'quick' (s. dort) ab!
  362.  
  363.   filter <yes|no>      no bzw. Filter aus
  364.               Schaltet den Amiga-internen Tiefpassfilter ein
  365.               oder aus. Es ist von Vorteil, den Filter ab-
  366.               geschaltet zu lassen, da dann Frequenzen über
  367.               7 kHz nicht mehr ausgefiltert werden, dies führt
  368.               zu einer merklichen Klangverbesserung.
  369.               Hinweis: Dieser Schalter ist beim Amiga 1000
  370.               ohne Wirkung !
  371.  
  372.   quick <yes|no>      yes bzw. Modul wird sofort gespielt
  373.               Legt fest, ob ein Modul sofort nach dem Laden
  374.               oder erst nach explizitem Play (Gadget/Shortcut/
  375.               ARexx) abgespielt wird. Diese Option ist
  376.               hauptsächlich zur Synchronisation in ARexx-
  377.               Scripts gedacht.
  378.  
  379.   random <yes|no>      no bzw. sequentielle Reihenfolge
  380.               Legt fest, ob bei einer Next/Prev-Song Aktion das
  381.               nachfolgende bzw. vorhergehende oder ein zufällig
  382.               ausgewähltes Modul der Liste gespielt wird. Ein
  383.               einmal gespieltes Modul wird solange nicht mehr
  384.               gespielt, bis alle anderen Module in der Liste
  385.               gespielt wurden. Diese Vorgehensweise ist auch
  386.               unter dem Stichpunkt Shuffleplay bekannt. Diese
  387.               Option ist nur sinnvoll bei mehr als zwei Modulen
  388.               in der Modulliste.
  389.  
  390.   append <yes|no>      no bzw. die Modulliste wird vor jedem Selektieren
  391.               gelöscht. Legt fest, ob bei jeder Fileauswahl
  392.               eine neue Liste angelegt werden soll oder die
  393.               Liste am Ende erweitert wird. Damit ist ein
  394.               Multiselect über mehrere Directorys möglich.
  395.  
  396.   fadeout <yes|no>      no bzw. kein Fading
  397.               Legt fest, ob bei einem Eject Ereignis der
  398.               aktuell spielende Song ausgeblendet werden soll
  399.               oder nicht. Diese Option ist nur bei Playern
  400.               wirksam, die eine Lautstärkeneinstellung
  401.               unterstützen.
  402.  
  403.   songend <yes|no>      no bzw. kein Beachten des Songendes
  404.               Legt fest, ob das Songende beachtet wird oder
  405.               nicht. Einige Player können DeliTracker
  406.               signalisieren, wenn das aktuelle Modul einmal
  407.               komplett gespielt wurde. Ist diese Option aktiv,
  408.               beachtet DeliTracker das Songende, d.h. das
  409.               aktuelle Modul wird gestoppt und dann eine
  410.               NextSong Aktion ausgelöst. Bei nur einem Modul
  411.               in der Songliste wird dies nur gestoppt.
  412.  
  413.   timeout <Nummer>      0 bzw. kein Timeout
  414.               Legt die Zeitspanne (in Sekunden) fest, die ein
  415.               Modul spielt. Danach wird eine NextSong Aktion
  416.               ausgelöst. Bei 0 ist diese Funktion abgeschaltet.
  417.  
  418.  
  419.   5.4 Das Konfigurationsfile
  420.  
  421.   Ein Konfigurationsfile ist eine Datei, in der mehrere Optionen mit den
  422.   gewünschten Argumenten aufgeführt sind. Dabei ist zu beachten, daß die
  423.   'config'-Option als einzige nicht benutzt werden kann. Pro Zeile darf
  424.   nur eine Option verwendet werden. Eine Konfigurationsdatei kann entweder
  425.   mit den Save Optionen aus dem Setup Fenster oder manuell ertstellt werden.
  426.   Mit Hilfe von NewList können sich Besitzer großer Modulverzeichnisse eine
  427.   Modulliste eines kompletten Directorys erstellen. Tragen Sie dazu
  428.   'alias ModList NL -hTigfsF "module=\'%P\'" []' in Ihre Shell-Startup ein.
  429.   Der Output muß nur noch in eine Datei umgeleitet werden.
  430.  
  431.   Beispiel für eine Konfigurationsdatei:
  432.  
  433.   windowxy=473/15
  434.   random=yes
  435.   songend=yes
  436.   timeout=300
  437.   reqlines=50
  438.   subsong=2
  439.   playerpath="Data:DeliPlayers"
  440.   module="Data:Modules/SonicArranger/MF__Slowmotion1.3"
  441.   module="Data:Modules/FutureComposer13/hidden part.pp"
  442.  
  443.   Beim Start von DeliTracker haben die Optionen von CLI und Workbench
  444.   Priorität über ein Konfigurationsfile, d.h. die Einstellungen im
  445.   Konfigurationsfile werden dann durch die angegebene Option ersetzt.
  446.  
  447.   Bei Programmstart versucht DeliTracker das Konfigurationsfile
  448.   'ENV:DeliTracker.config' zu öffnen. Ist diese Datei vorhanden, übernimmt
  449.   DeliTracker alle angegebenen Einstellungen daraus. Er lädt dann die
  450.   externen Player sowie das Modul und spielt es. Ist keine Konfigurations-
  451.   datei vorhanden, so wird versucht, externe Player aus dem Verzeichnis
  452.   'DeliPlayers' (im aktuellen Pfad) nachzuladen. Ist dieses Directory auch
  453.   nicht vorhanden, stehen dem Benutzer nur die internen Player zur
  454.   Verfügung.
  455.  
  456.  
  457.  
  458. 6. DIE STEUERUNG VON DELITRACKER
  459.  
  460.   6.1 Das Kontroll Fenster
  461.  
  462.   Das Kontrollfenster ist das zentrale Bedienelement von DeliTracker, alle
  463.   Einstellungen, die das Modul betreffen, können hier gemacht werden.
  464.  
  465.     6.1.1 Gadgets
  466.  
  467.     Dies ist eine Übersicht über die Funktionen der einzelnen Gadgets.
  468.     Wenn bestimmte Gadgets gerastert dargestellt werden, ist für den
  469.     aktuellen Player diese Option nicht verfügbar. Das kann zum einen
  470.     bedeuten, daß die Funktion vom Player gar nicht unterstützt wird
  471.     (wie z.B Subsongs beim SoundTracker) oder zum anderen, daß der Player
  472.     noch nicht optimal angepaßt ist.
  473.  
  474.     +---------+-+------------------------------------------------+-+
  475.     |          | |                          [] | | [15]
  476. [1] |     ?    + +------------------------------------------------+ +
  477.     |          | |                 []             | | [14]
  478.     +---+-----+-+--+-----+-----+-----+----+-----+-----+-----+----+-+
  479. [2] | + |     |       |     |     |     |      |    |     |        | |¯¯\ |
  480.     +---+  |< |     < |  << |  |> |  >> |    > |  >| |  [] |     ^  | |     | |
  481. [3] | - |     |       |     |     |     |      |    |     |     -  | +--+ |
  482.     +---+-----+----+-----+-----+-----+----+-----+-----+-----+------+
  483.       [4]    [5]  [6]   [7]     [8]   [9]  [10]  [11]    [12]  [13]
  484.  
  485.      [1] öffnet bzw. schließt das Setupwindow (siehe unten)
  486.  
  487.      [2] Faster: erhöht die Abspielgeschwindigkeit des aktuellen Moduls
  488.  
  489.      [3] Slower: verringert die Abspielgeschwindigkeit des aktuell
  490.      spielenden Musikstücks.
  491.  
  492.      [4] Prev Song: wenn nur ein File angewählt wurde und der Song mit
  493.      Kill entfernt wurde, wird er wieder eingeladen. Sind mehrere
  494.      Files selektiert, wird der Vorgänger des aktuellen Songs
  495.      eingeladen (siehe auch Randomplay).
  496.  
  497.      [5] Prev Subsong: spielt den vorherigen Subsong.
  498.  
  499.      [6] Backward: der aktuelle Patternzeiger wird auf das vorherige
  500.      Pattern gesetzt. Wird gerade das erste Pattern gespielt, wird
  501.      er auf das letzte gesetzt.
  502.  
  503.      [7] Play/Pause: startet einen pausierenden bzw. gestoppten Sound oder
  504.      hält den gerade spielenden Song an.
  505.  
  506.      [8] Forward: der aktuelle Patternzeiger wird auf das nachfolgende
  507.      Pattern gesetzt. Wird gerade das letzte Pattern gespielt, wird
  508.      er auf das erste gesetzt.
  509.  
  510.      [9] Next Subsong: spielt den nächsten Subsong. Manche Musikformate
  511.      erlauben es mehrere Melodien in einem Modul abzuspeichern, diese
  512.      und die 'Prev Subsong' Funktion erlauben das 'Blättern' in solchen
  513.      Modulen.
  514.  
  515.     [10] Next Song: bei nur einem angewählten File wie bei 'Prev Song',
  516.      sonst wird der Nachfolger des aktuellen Songs eingeladen.
  517.  
  518.     [11] Stop Song: setzt die Abspielgeschwindigkeit und den Patternzeiger
  519.      auf den Startwert zurück.
  520.  
  521.     [12] Kill Song: stoppt ggf. den Song und entfernt ihn aus dem Speicher.
  522.  
  523.     [13] Load Song: öffnet den Filerequester. Wenn beim Auswählen die SHIFT-
  524.      Taste gehalten wird, können mehrere Files angewählt werden. Diese
  525.      werden dann in eine zyklische Liste eingetragen. Nach Verlassen des
  526.      Requesters wird der erste ausgewählte Song geladen und gespielt.
  527.      Alle weiteren können über 'Next Song' bzw. 'Prev Song' erreicht
  528.      werden. Falls genügend Speicher vorhanden ist, wird der aktuell
  529.      spielende Song erst gestoppt, wenn der angewählte komplett geladen
  530.      wurde. Diese eingebaute Doublebuffering-Routine sorgt speziell bei
  531.      Floppybesitzern für Dauersoundgenuß.
  532.  
  533.     [14] Balance-Regler: dieses Gadget dient zur Regelung der Balance.
  534.  
  535.     [15] Volume-Regler: Gadget für die Lautstärke-Regelung
  536.  
  537.  
  538.     6.1.2 Menus
  539.  
  540.        Project
  541.         Load Module <A> L .........Öffnet den Filerequester.
  542.         Play/Pause      .........Startet bzw. Pausiert das Modul.
  543.         Stop Playing      .........Stopt das aktuelle Modul.
  544.         Eject Module      .........Stoppt das aktuelle Modul und
  545.                        entfernt es aus dem Speicher.
  546.         =================
  547.         Prefs ...      .........Öffnet das Setup Fenster.
  548.         =================
  549.         About ...   <A> ? .........Öffnet den 'About' Requester.
  550.         =================
  551.         Quit        <A> Q .........Beendet DeliTracker.
  552.  
  553.        Control
  554.         Faster          .........Erhöht das Abspieltempo.
  555.         Slower          .........Verringert das Abspieltempo.
  556.         Forward          .........Springt ein Pattern vor.
  557.         Backward      .........Springt ein Pattern zurück.
  558.         Next SubSong      .........Springt zum nächsten Subsong.
  559.         Prev Subsong      .........Springt zum vorherigen Subsong.
  560.         Next Module      .........Lädt das nächste Musikstück in
  561.                        in der Liste, falls RANDOMPLAY
  562.                        deaktiviert ist.
  563.         Prev Module      .........Lädt das vorherige Modul (s.o.).
  564.  
  565.     6.1.3 Shortcuts
  566.  
  567.     Alle Funktionen des Kontroll Fensters lassen sich durch Tastatur-
  568.     abkürzungen auslösen. Um die Shortcut möglichst einprägsam zu machen,
  569.     wurden die Kontrollfunktionen auf Tasten des Ziffernblocks hierarchisch
  570.     zugeordnet. Zudem gibt es noch die Möglichkeit, einen Hotkey zum Öffnen
  571.     und Schließen des Kontrollfensters zu definieren (siehe cx_hotkey).
  572.  
  573.     * und <A> L Filerequester zur Modulauswahl öffnen.
  574.     /        öffnet Setupwindow.
  575.  
  576.     ] und )    nächsten angewählten Song spielen (nur bei mehreren Files).
  577.     [ und (    Vorgängersong spielen (nur bei mehreren Files).
  578.  
  579.     8        nächsten Subsong spielen.
  580.     7        vorherigen Subsong spielen.
  581.  
  582.     5        Patternzeiger auf nächstes Pattern setzen
  583.     6        Patternzeiger auf vorheriges Pattern setzen
  584.  
  585.     +        erhöht Abspielgeschwindigkeit
  586.     -        verringert Abspielgeschwindigkeit
  587.  
  588.     1        Stop Song (Song anhalten, Patternzeiger auf Anfang setzen)
  589.     0        Play/Pause (spielen bzw. anhalten der Musik)
  590.  
  591.     .        Song anhalten und seinen Speicher freigeben (Eject)
  592.  
  593.     9        verringert die Lautstärke (neben -)
  594.     6        erhöht die Lautstärke (neben +)
  595.  
  596.     2        verändert die Balance so, daß der linke Kanal lauter wird.
  597.     3        verändert die Balance so, daß der rechte Kanal lauter wird.
  598.  
  599.     <A> ?    öffnet den 'About' Requester.
  600.     <A> Q    beendet DeliTracker.
  601.  
  602.     6.1.4 Appwindow
  603.  
  604.     Um die Modulselektion möglichst komfortabel zu halten, können sie Icons
  605.     von Modulen und Modulschubladen auf dem Kontrollfenster ablegen. Die
  606.     Module werden dann behandelt, als seien sie im Filerequester selekitert
  607.     worden. Bei Schubladen werden alle Files in die Modulliste übernommen.
  608.     Files, bei denen es sich nicht um Module handeln kann, wie z.B '.info'
  609.     Files, werden ebenso wie Subdirectorys nicht eingelesen. Um diese
  610.     Funktion nutzen zu können, muß das DeliTracker Kontrollfenster natürlich
  611.     auf der Workbench geöffnet sein.
  612.  
  613.  
  614.   6.2 Das Setup Fenster
  615.  
  616.   Das Setupfenster dient zur Einstellung von globalen Parametern sowie
  617.   Playerspezifischen Einstellungen. Es kann auf mehrere Arten geöffnet
  618.   werden: Setup Gadget im Kontrollfenster, über den Menüpunkt 'Prefs ...',
  619.   über ShortCut '/' oder über das ARexx Kommando 'openprefswin'. Um einen
  620.   Player zu aktivieren, wählen Sie den Player im Playerrequester an. Darauf
  621.   werden im PlayerInfo-Feld alle verfügbaren Informationen über diesen
  622.   Player angezeigt.
  623.  
  624.     6.2.1 Gadgets
  625.  
  626.     ADD         Lädt den angewählten Player und legt den Pfad für
  627.          externe Player fest. Ein schon geladener Player
  628.          gleichen Namens wird allerdings nur dann durch den
  629.          neuen Player ersetzt, falls seine Versionsnummer
  630.          kleiner als die des neu geladenen Players ist.
  631.  
  632.     DEL         Löscht den selektierten Player, d.h. sein Speicher
  633.          wird freigegeben. Interne Player können zwar ebenfalls
  634.          gelöscht werden, jedoch wird deren Speicher nicht
  635.          freigegeben.
  636.  
  637.     Filter     siehe 5.4 Filter Voreinstellung
  638.  
  639.     Quick     siehe 5.4 Quick Voreinstellung
  640.  
  641.     Random     siehe 5.4 Random Voreinstellung
  642.  
  643.     Songend     siehe 5.4 Songend Voreinstellung
  644.  
  645.     Append     siehe 5.4 Append Voreinstellung
  646.  
  647.     Fadeout     siehe 5.4 Fadeout Voreinstellung
  648.  
  649.     Time     siehe 5.4 Timeout Voreinstellung
  650.  
  651.     Load Config     Eine Konfigurationsdatei laden und auswerten.
  652.  
  653.     Save Config     Schreibt alle aktuellen Einstellungen und die Modulliste
  654.          in eine Konfigurationsdatei.
  655.  
  656.     Save List     Schreibt nur die aktuelle Modulliste in eine
  657.          Konfigurationsdatei.
  658.  
  659.     Config     Falls vorhanden, wird die spezifische Konfigurations-
  660.          routine des angewählten Players aufgerufen.
  661.  
  662.     OK         Schließt das Setup-Fenster.
  663.  
  664.     Sie können das Playerdirectory auch angeben, indem sie den Pfad in das
  665.     Stringgadget (links neben ADD) eingeben.
  666.  
  667.     6.2.2 Shortcuts
  668.  
  669.     Um auch hier die Tastaturkürzel einprägsam zu gestalten, wurde, so weit
  670.     möglich, der Anfangsbuchstabe der Funktion als Shortcut gewählt. Die
  671.     Tastaturkürzel können als Groß- und Kleinbuchstaben eingegeben werden.
  672.  
  673.     a        <A>dd (Filerequester zum Playerladen öffnen).
  674.  
  675.     d        <D>el (selektierten Player entfernen).
  676.  
  677.     l        <L>oad (Konfiguartionsdatei mittels Filerequester laden).
  678.  
  679.     s        <S>ave (Konfiguartionsdatei speichern).
  680.  
  681.     c        <C>onfig (selektierten Player, wenn möglich, konfigurieren).
  682.  
  683.     o        <O>k (Setupwindow verlassen).
  684.  
  685.     q        <Q>uickstart umschaltem.
  686.  
  687.     f        <F>ilterzustand wechseln.
  688.  
  689.     r        <R>andommodus umschalten.
  690.  
  691.     p        A<P>pendmodus umschalten.
  692.  
  693.     e        Song<E>nd Erkennung umschalten.
  694.  
  695.     u        Fadeo<U>t umschalten.
  696.  
  697.     t        <T>ime(out) Gadget aktivieren.
  698.  
  699.  
  700.   6.3 ARexx
  701.  
  702.   Nahezu alle Funktionen von DeliTracker lassen sich auch über ARexx
  703.   steuern. Dies ist z.B. in Verbindung mit AmigaVision sehr nützlich.
  704.   DeliTracker kann über "rexx_DT" als Function Host angesprochen werden.
  705.   Folgende Kommandos stehen zur Verfügung:
  706.  
  707.   quit            beendet DeliTracker
  708.  
  709.   filter <yes|no>    yes: Schaltet den Filter an.
  710.             no:  Schaltet den Filter ab.
  711.  
  712.   quickstart <yes|no>    yes: Schaltet die Quickstart-Funktion an.
  713.             no:  Schaltet die Quickstart-Funktion ab.
  714.  
  715.   random <yes|no>    yes: Schaltet Randomplay an.
  716.             no:  Schaltet Randomplay ab
  717.  
  718.   songend <yes|no>    yes: Eintreffende Songendsignale werden beachtet.
  719.             no:  Schaltet die Songend Erkennung ab.
  720.  
  721.   append <yes|no>    yes: Aktiviert den Appendmodus.
  722.             no:  Deaktiviert den Appendmodus.
  723.  
  724.   fadeout <yes|no>    yes: Aktiviert den Fadeoutmodus.
  725.             no:  Deaktiviert den Fadeoutmodus.
  726.  
  727.   timeout <SECS>    Timeout wird auf die angegebene Zeitspanne (SECS)
  728.             in Sekunden gesetzt. Bei SECS = 0 wird diese Option
  729.             abgeschaltet.
  730.  
  731.   volume <VOL>        Setzt Volume auf <VOL> (Bereich von VOL: 0 - 64)
  732.  
  733.   balance <BAL>        Setzt Balance auf <BAL>, 0 ist default, -64 nur
  734.             links, 64 nur rechts (Bereich von BAL: -64 bis 64)
  735.  
  736.   forward        Nächstes Pattern spielen
  737.  
  738.   backward        Vorheriges Pattern spielen
  739.  
  740.   nextsong        Nächsten Song spielen
  741.  
  742.   prevsong        Vorherigen Song spielen
  743.  
  744.   nextsubsong        Nächsten Subsong spielen
  745.  
  746.   prevsubsong        Vorherigen Subsong spielen
  747.  
  748.   faster        Abspielgeschwindigkeit erhöhen
  749.  
  750.   slower        Abspielgeschwindigkeit verrringern
  751.  
  752.   loadconfig [DATEI]    Konfigdatei [DATEI] laden, wenn [DATEI] angegeben
  753.             wurde, sonst Requester für 'Konfigdatei laden'
  754.             öffnen.
  755.  
  756.   saveconfig [DATEI]    Konfiguration und Modulliste in [DATEI] sichern,
  757.             wenn [DATEI] angegeben wurde, sonst entsprechenden
  758.             Requester öffnen.
  759.  
  760.   savelist [DATEI]    Modulliste in [DATEI] sichern, wenn [DATEI]
  761.             angegeben wurde, sonst entsprechenden Requester
  762.             öffnen.
  763.  
  764.   loadplayer [PLAYER]    Lädt den angegebenen Player, ansonsten wird der
  765.             Requester zum Player-Laden geöffnet.
  766.  
  767.   deleteplayer <NUMMER> Entfernt den Player mit der angegebenen Nummer aus
  768.             der Playerliste. Bei diesem Kommando ist allerdings
  769.             zu beachten, daß die Module des gelöschten Players
  770.             ab sofort nicht mehr erkannt werden.
  771.  
  772.   configplayer <NUMMER> Ruft die Konfigurationsroutine des dazugehörigen
  773.             Players auf.
  774.  
  775.   playpause        Der aktuell spielende Song wird angehalten wenn er
  776.             spielt bzw. gespielt wenn er pausiert ist.
  777.  
  778.   stop            Stoppt den aktuell spielenden Song.
  779.  
  780.   playmod [MODUL]    Falls [MODUL] angegeben, wird es geladen und
  781.             abspielt, sofern es von einem Player erkannt wird.
  782.             Ansonsten öffnet sich der Filerequester zur Datei-
  783.             auswahl.
  784.  
  785.   eject            Entfernt das derzeitige Modul aus dem Speicher.
  786.  
  787.   makelist [MODUL]    Falls [MODUL] angegeben ist, wird es an das Ende
  788.             einer internen Modulliste angehängt. Wird es nicht
  789.             angegeben, dann wird die interne Modulliste unter
  790.             Berücksichtigung des Append-Flags zur aktuellen
  791.             Modulliste gemacht.
  792.  
  793.   playlist <NUMMER>    Spielt das Modul mit der angegebenen Listenposition.
  794.  
  795.   pubscreen <SCREEN>    Schließt alle offenen DeliTracker Fenster auf dem
  796.             derzeitigen Screen und versucht, das Kontrollfenster
  797.             auf dem PubScreen mit dem Namen <SCREEN> wieder zu
  798.             öffnen.
  799.  
  800.   openmainwin        Öffnet das Kontrollfenster
  801.  
  802.   closemainwin        Schließt das Kontrollfenster (nun kann DeliTracker
  803.             nur noch von ARexx aus gesteuert werden).
  804.  
  805.   openprefswin        Öffnet das Setup-Fenster
  806.  
  807.   closeprefswin        Schließt das Setup-Fenster
  808.  
  809.  
  810.   status <group> <dependent>  Gibt den aktuellen Status zurück. Dabei
  811.             werden die drei Gruppen Globale Einstellungen (g),
  812.             Modulabhängige Einstellungen (m) und Playerab-
  813.             hängige Einstellungen (p) unterschieden. Je nach
  814.             Gruppe müssen evtl. weitere Argumente übergeben
  815.             werden.
  816.  
  817.   <group> =    g :    Global
  818.  
  819.     <dependent>  = <cmd>
  820.  
  821.            <cmd>        Bedeutung    und    Returnwert
  822.  
  823.         ver        DeliTracker Version    Zahl
  824.         dir        Playerverzeichnis    String
  825.         num        Playeranzahl        Zahl
  826.         led        Filter-Zustand        <yes|no>
  827.         qst        Quickstart-Zustand    <yes|no>
  828.         rnd        Random-Zustand        <yes|no>
  829.         app        Append-Zustand        <yes|no>
  830.         fad        Fadeout-Zustand        <yes|no>
  831.         end        Songend-Zustand        <yes|no>
  832.         tim        Song-Timeout (sec)    Zahl
  833.         mwi        Kontrollfenster offen    <yes|no>
  834.         pwi        Setup-Fenster offen    <yes|no>
  835.         vol        derzeitige Lautstärke    Zahl
  836.         bal        derzeitige Balance    Zahl
  837.         ply        Song spielt        <yes|no>
  838.         pub        gewünschter PubScreen    String
  839.  
  840.   <group> =    m :    Module
  841.  
  842.     <dependent>  =    <cmd>
  843.  
  844.            <cmd>        Bedeutung    und    Returnwert
  845.  
  846.         dir        Modulverzeichnis    String
  847.         fil        Modulname        String
  848.         pnr        aktiver Player        Zahl
  849.         max        Module in Modulliste    Zahl
  850.         num        Position in Modulliste    Zahl
  851.  
  852.   <group> =    p :    Player
  853.  
  854.     <dependent>  =    <playernum> <cmd>
  855.  
  856.            <cmd>        Bedeutung    und    Returnwert
  857.  
  858.         nam        Playername        String
  859.         cre        Creatorname        String
  860.         ver        Versionsnummer        Zahl
  861.         vol        Lautstärke veränderbar    <yes|no>
  862.         bal        Balance veränderbar    <yes|no>
  863.         jmp        Patternjump verfügbar    <yes|no>
  864.         spd        Playspeed regelbar    <yes|no>
  865.         sub        Subsong verfügbar    <yes|no>
  866.         cfg        Player konfigurierbar    <yes|no>
  867.         pck        Supports Packed Mods    <yes|no>
  868.  
  869.   Bei eckigen Klammern [...] kann ein Argument angegeben werden, bei
  870.   spitzen Klammern <...> muß es angegeben werden.
  871.  
  872.   Hinweis: Für fast alle Kommandos existieren Beispiel Scripts. Alle
  873.   ARexx Kommandos dürfen in Groß- oder Kleinschreibung verwendet werden.
  874.  
  875.  
  876.   6.4 Commodities
  877.  
  878.   Da DeliTracker ein Commodity ist lassen sich einige dafür typische Dinge
  879.   mit dem Commodies Exchange Programm steuern. Dazu müssen sie zuerst unter
  880.   'Verfügbare Commodities' DeliTracker anwählen. Das Cycle Gadget zeigt
  881.   ihnen an, ob der Hotkey zum öffnen bzw. schließen des Kontrollfensters
  882.   aktiv oder inaktiv ist. Um das Kontrollfenster zu öffnen bzw. ggf. zu
  883.   aktivieren klicken sie auf 'Anzeige sichtbar'. Das 'Anzeige verborgen'
  884.   Gadget dient zum schließen der DeliTracker Fenster. Ein Klick auf das
  885.   'Entfernen' Gadget bewirkt, das DeliTracker beendet wird. Wie bei
  886.   Commodities üblich bewirkt ein Betätigen des Closegadgets nur ein
  887.   Schließen des Fensters, jedoch kein Beenden des Programms.
  888.  
  889.  
  890. 7. PROBLEMECKE
  891.  
  892.   Symptom: Das Preferences Window läßt sich nicht öffnen. Überprüfen Sie,
  893.   ob die Höhe des Screens, auf dem DeliTracker läuft, mindestens 190 Pixel
  894.   plus die Titelbarhöhe ist. Bei einem zu schmalen oder zu  niedrigen
  895.   Screen läßt sich nämlich das Preferences Window nicht öffnen.
  896.   Gegenmaßnahme: Verkleinern Sie den Font (topaz 8) oder benutzen Sie
  897.   einen größeren Screen.
  898.  
  899.   Ein Hinweis an alle Besitzer von Turbokarten (speziell 68030 und höher):
  900.   Obwohl DeliTracker selbst problemlos auf schnelleren Prozessoren läuft,
  901.   kann es bei einigen nicht sauber programmierten (externen) Playern zu
  902.   Problemen kommen. Das Timing mancher Abspielroutinen ist nämlich nur auf
  903.   den 68000'er zugeschnitten und verursacht dann ein Klirren oder Auslassen
  904.   von Noten. Zum Abstürzen der Player oder gar von DeliTracker selbst kann
  905.   dies aber nicht führen. Auch in späteren Versionen von DeliTracker wird
  906.   es voraussichtlich keine turbofeste Version solcher Player geben, da es
  907.   oft fast unmöglich ist, diese entsprechend umzuprogrammieren. Bei Playern,
  908.   die absolut auf die Interrupt Vectortabelle ($70 Vector/Audio-DMA Ende)
  909.   schreiben, kann es passieren, daß man nichts hört, wenn das VBR-Register
  910.   geändert wurde. In der Playerdokumentation ist vermerkt, auf welche
  911.   Player dies zutrifft.
  912.  
  913.   Ein Hinweis an alle Besitzer von NTSC-Amigas und Amigas mit ECS-Denise:
  914.   Prinzipiell spielen alle Player sowohl auf PAL- als auch auf NTSC-Geräten
  915.   gleich schnell, da die Abspielgeschwindigkeit durch einen CIA-B Interrupt
  916.   gesteuert wird. Einige (externe) Player benötigen jedoch unbedingt einen
  917.   VBlank Interrupt. Da dessen Frequenz vom jeweiligen Videomodus abhängt,
  918.   spielt ein solcher Player im Productivity-, NTSC- oder PAL-Modus
  919.   unterschiedlich schnell.
  920.   Screens mit 16 Farben in Hires oder mit 2 Farben in SuperHires b.z.w.
  921.   Productivity benötigen ca. 60% aller Buszyklen des ChipRam. Wenn dann
  922.   gleichzeitig ein besonders rechenintensiver Player (z.B. einer mit mehr
  923.   als 4 Stimmen) aktiv ist, steht das System fast still und der jeweilige
  924.   Player kann mangels Rechenzeit falsch spielen.
  925.  
  926.   Ein Hinweis an alle Modem-Besitzer:
  927.   Wenn ein Player den internen DeliTracker Timer-Interrupt benutzt, treten
  928.   keine Übertragungsfehler bei seriellen Transfers (getestet auf einem A500
  929.   mit NComm bis 19200 Baud) auf. Bei Playern, die selbst einen Timer-
  930.   Interrupt generieren, sind derartige Störungen nicht auszuschließen.
  931.  
  932.  
  933. 8. DIE PROGRAMIERUNG EXTERNER PLAYER
  934.  
  935.   DeliTracker unterstützt sog. externe Player. Das sind Executables, die in
  936.   einem speziellen Format vorliegen und von DeliTracker nachgeladen werden
  937.   können.
  938.  
  939.   8.1 Das externe Player Konzept
  940.  
  941.   Externe Player sind Executables (Objekt Files), die den Replaycode eines
  942.   Soundsystems enthalten. Am Anfang besitzen sie eine charakteristische
  943.   Playerstruktur. Diese Struktur wird mit dem Macro aus dem Includefile
  944.   'misc/deliplayer.i' erzeugt. Es gibt zwei Arten von externen Playern:
  945.   normale Player und Custom Module.
  946.  
  947.     8.1.1 Schematischer Aufbau von externen Playern
  948.  
  949.     Normale Player unterscheiden sich von Custom Modulen durch das
  950.     Vorhandensein einer Check Routine und das Fehlen des DTP_CustomPlayer
  951.     Tags. Desweiteren enthalten sie natürlich keine Musikdaten :-)
  952.  
  953.     { Playerheader    }    Kennzeichnet das Object als Player.
  954.     { TagArray    }    Beschreibung, was der Player kann.
  955.     { Interfacecode }    Playername/Registerumsetzung/Checkcode u.ä.
  956.     { Replaycode    }    Eigentlicher Musikabspielcode.
  957.     { evtl. Daten    }    und Daten
  958.  
  959.     8.1.2 Schematischer Aufbau von Custom Modulen
  960.  
  961.     Custom Module sind keine Module im herkömmlichen Sinn, sondern im
  962.     wesentlichen Player, die ein Spezialmodul beinhalten. Mit diesem Format
  963.     können Sie auch die ausgefallensten Moduleformate leicht an DeliTracker
  964.     anpassen. Sollten für den Player jedoch mehrere Module existieren, ist
  965.     es in jedem Fall ratsam, einen richtigen Player zu schreiben.
  966.  
  967.     { Playerheader    }    Kennzeichnet das Object als Player.
  968.     { TagArray    }    Beschreibung, was der Player kann.
  969.     { Interfacecode }    Routinen zur Registerumsetzung u.ä.
  970.     { Replaycode    }    Eigentlicher Musikabspielcode.
  971.     { evtl. Daten    }    und Daten
  972.     { SOUND DATEN    }    Das eigentliche Modul
  973.  
  974.  
  975.   8.2 Anpassung von Playern
  976.  
  977.   Es ist relativ einfach, eine Replayroutine an DeliTracker anzupassen.
  978.   Alles was Sie tun müssen ist ein wenig Interfacecode zu schreiben. Dies
  979.   ist aber halb so wild, denn DeliTracker stellt ihnen viele hilfreiche
  980.   Routinen zur Verfügung. Um ein neues Soundsystem anzupassen, benötigen
  981.   Sie zum einen den Quellcode oder ein linkbares Objektfile der Replay-
  982.   routine, zum anderen sollten mindestens ca. 5 Module zum Testen der
  983.   Funktionstüchtigkeit des Players vorhanden sein.
  984.  
  985.     8.2.1 Playerheader
  986.  
  987.     Das PLAYERHEADER Macro generiert den Header, der das File als externen
  988.     Player identifiziert. Dieses Macro muß angegeben werden und ganz am
  989.     Anfang des Players stehen. Als einziger Parameter ist ein Pointer auf
  990.     ein Tag Array einzutragen, in dem alle Funktionen stehen, die der
  991.     Player DeliTracker zur Verfügung stellt. Bei allen Funktionsaufrufen
  992.     außer der Interruptroutine (DTP_Interrupt) enthält a5 die Base. Globale
  993.     Variablen können dadurch adressiert werden (siehe 'misc/deliplayer.i').
  994.     Da DeliTracker vor Aufruf einer Playerroutine (außer bei DTP_Interrupt)
  995.     alle Register sichert, dürfen diese verändert werden.
  996.  
  997.     PLAYERHEADER <tagarray>
  998.  
  999.     tagarray    Pointer auf ein Tag Array, das mit TAG_DONE
  1000.             abgeschlossen sein muß. Tags, bei denen ti_Data NULL
  1001.             ist, werden ignoriert.
  1002.  
  1003.     8.2.2 Modulerkennung
  1004.  
  1005.     Damit DeliTracker die einzelnen Module unterscheiden kann, befindet
  1006.     sich in jedem Player eine Erkennungsroutine, die auf ein zugehöriges
  1007.     Modul testet. Diese Routine prüft auf Stellen im Modul, die bei allen
  1008.     Modulen eines Players gleich sind. So z.B. auf 'M.K.' bei Offset $438
  1009.     im NoiseTracker-Player. Bei Sound- und NoiseTracker ist nur das Modul
  1010.     abgespeichert, z.B. bei MarkII hängt vor jedem Modul noch die Replay-
  1011.     routine. Bei so einem Modul müssen Sie auf signifikante Assembler-
  1012.     befehle testen. Ein Vergleich auf ein oder zwei Sprungbefehle, egal
  1013.     ob bra oder jmp, ist hier nicht ausreichend, da bei vielen Modulen
  1014.     dieses Typs Sprungtabellen am Anfang stehen und der Player möglicher-
  1015.     weise das falsche Modul erkennen könnte, was in den meisten Fällen zum
  1016.     Absturz führt. Der Player muß genau eine Checkroutine verwenden. Daraus
  1017.     ergeben sich zwei Grundtypen von Playern.
  1018.  
  1019.     a) Typ eins Player - in der Regel etwas komplexer
  1020.     Bei ihnen ist die Check1 Funktion implementiert.
  1021.  
  1022.     Vorteil:  Es lassen sich auch Player realisieren, die das Modul selbst
  1023.           nachladen.
  1024.     Nachteil: Gepackte Files werden nicht unterstützt.
  1025.  
  1026.     Dieser Player sollte nur für Härtefälle verwendet werden.
  1027.     (z.B: FTM, IFF-8SVX Player, der das Sample während dem Spielen
  1028.      nachlädt, ...)
  1029.  
  1030.  
  1031.     b) Typ zwei Player - die einfachere Variante
  1032.     Bei ihnen ist die Check2 Funktion implementiert
  1033.  
  1034.     Vorteil:  Das Modul kann gepackt sein, der Player bemerkt davon nichts.
  1035.     Nachteil: Das Modul ist in jedem Fall im Chip-Memory.
  1036.  
  1037.     Es sollte im Normalfall dieser Playertyp verwendet werden.
  1038.  
  1039.     Egal ob Typ eins oder zwei, wenn der Player das Modul erkannt hat, muß
  1040.     er in d0.l=0 zurückliefern, wenn nicht d0.l<>0.
  1041.  
  1042.     8.2.3 Interrupts
  1043.  
  1044.     Hier gibt es auch eine Einteilung in zwei verschiedene Typen.
  1045.  
  1046.     a) Player die den DeliTracker Interrupt verwenden
  1047.     Vorteil:  Der Player ist vom Videomodus unabhängig.
  1048.           Besitzt automatisch die Faster/Slower Funktion.
  1049.           Kein Aufwand für den Interrupt (Code + Interruptstruktur).
  1050.           Ist kompatibel zum serial.device
  1051.     Nachteil: Der Interrupt kommt nicht synchron zum VBlank. (Dies führt
  1052.           nur in den seltensten Fällen zu Problemen.)
  1053.  
  1054.     b) Player die ihren eigenen Interrupt erzeugen.
  1055.     Vorteil:  Es können andere Interruptquellen benutzt werden
  1056.           (z.B. AudioIRQ).
  1057.     Nachteil: Erhöhter Aufwand, bei VBlank nicht mehr unabhängig vom
  1058.           Videomodus.
  1059.  
  1060.     Wenn ein eigener Timerinterrupt verwendet wird, sollte die CIAB
  1061.     (wg. OS2.0) und die entsprechenden Resourcefunktionen verwendet werden.
  1062.     Außerdem ist es sehr sinnvoll die Replayroutine nicht direkt im CIA-B
  1063.     TimerInterrupt abspielen zu lassen, sondern im Timerinterrupt einen
  1064.     Soft-Interrupt mittels Cause() zu generieren. In diesem SoftInt kann
  1065.     man dann die eigentliche Replayroutine ablaufen lassen. So hat man den
  1066.     Vorteil, daß man wesentlich kompatibler zum serial.device ist. Dies
  1067.     liegt daran, daß SoftInt eine niedrigere Priorität als der der RBF
  1068.     (Read Buffer Full) Interrupt hat d.h. erst wird der serielle Port
  1069.     bedient, dann erst die Replayroutine. Es wird davor gewarnt, direkt in
  1070.     die Interruptvektoren zu schreiben! Zur Erinnerung: vom Betriebssystem
  1071.     werden die Funktionen AddIntServer() und SetIntVector() zur Verfügung
  1072.     gestellt!
  1073.  
  1074.  
  1075.   8.3 Bedeutung der Tags
  1076.  
  1077.   Außer den SystemTags (TAG_DONE, TAG_IGNORE, TAG_MORE, TAG_SKIP) dürfen
  1078.   folgende Tags verwendet werden:
  1079.  
  1080.   DTP_CustomPlayer (BOOL) - dieser Tag deklariert einen Player als
  1081.         Customplayer.
  1082.         Bei Verwendung dieses Tags sind folgende Tags dann
  1083.         bedeutungslos:    DTP_PlayerVersion
  1084.                 DTP_PlayerName
  1085.                 DTP_Creator
  1086.                 DTP_Check1
  1087.                 DTP_Check2
  1088.                 DTP_ExtLoad
  1089.                 DTP_Config
  1090.                 DTP_UserConfig
  1091.  
  1092.   DTP_RequestDTVersion (WORD) - damit kann man sicherstellen, daß
  1093.         mindestens eine bestimmte Version von DeliTracker
  1094.         vorhanden ist. Dieser Tag muß angegeben werden, wenn
  1095.         bei den DeliTrackerGlobals neue Funktionspointer
  1096.         hinzugekommen sind und diese vom Player benutzt werden.
  1097.         ti_Data ist dabei die Playerrevision.
  1098.  
  1099.   DTP_RequestV37 (BOOL) - wenn dieser Tag vorhanden ist, wird der Player
  1100.         nur noch von der Kick 2.0 Version von DeliTracker geladen
  1101.         (d.h. dtg_GadToolsBase ist gültig).
  1102.  
  1103.   DTP_PlayerVersion (WORD) - Tag, der die Revisionsnummer des Players
  1104.         enthält. Bei zwei Playern mit dem gleichen Playernamen wird
  1105.         derjenige mit der größeren Revisionsnummer geladen.
  1106.  
  1107.   DTP_PlayerName (STRPTR) - ti_Data enthält den Pointer auf den Namen des
  1108.         Players. Dieser String kann zwar beliebig lang sein aber
  1109.         zur Zeit werden nur die ersten 24 Zeichen angezeigt. Dieser
  1110.         Tag muß existieren!
  1111.  
  1112.   DTP_Creator (STRPTR) - Pointer auf den Namen des Autors. Dieser wird im
  1113.         Setupfenster im Playerinfofeld angezeigt. Dieser String
  1114.         kann $A als Zeilenumbruch enthalten.
  1115.  
  1116.   DTP_Check1 (FPTR) - Pointer auf eine Modulerkennungsroutine, die
  1117.         aufgerufen wird, wenn 1024 Bytes des Moduls geladen sind.
  1118.         Wird das Modul erkannt, liefert sie d0=0, ansonsten d0<>0.
  1119.  
  1120.   DTP_Check2 (FPTR) - Pointer auf eine Modulerkennungsroutine, die
  1121.         aufgerufen wird, wenn das komplette Modul geladen und evtl.
  1122.         entpackt ist. Wird das Modul erkannt, liefert sie d0=0,
  1123.         ansonsten d0<>0.
  1124.  
  1125.   DTP_ExtLoad (FPTR) - Pointer auf eine optionale Laderoutine für Module.
  1126.         Ist kein Fehler aufgetreten, wird d0=0 zurückgegeben, sonst
  1127.         d0<>0. Hinweis: Achten Sie darauf, daß im Fehlerfall alle
  1128.         allocierten Ressourcen (Memory, Locks, ...) wieder
  1129.         freigegeben werden, da dann keine weiteren Playerfunktionen
  1130.         mehr angesprungen werden.
  1131.  
  1132.   DTP_Interrupt (FPTR) - Pointer auf eine Interruptroutine, die mittels
  1133.         eines Timerinterrupts standardmäßig alle 1/50 sec
  1134.         aufgerufen wird. Dies ist die Standardmethode, um mit der
  1135.         richtigen Abspielgeschwindigkeit im PAL/NTSC/Productivity
  1136.         Videomodus zu spielen. Wenn keine DTP_Faster/DTP_Slower
  1137.         Tags angegeben sind, übernimmt DeliTracker dies durch
  1138.         Verändern der Interruptfrequenz. Dieser Tag kann auch nicht
  1139.         existieren, dann müssen aber DTP_StartInt/DTP_StopInt
  1140.         vorhanden sein !
  1141.  
  1142.   DTP_Stop (FPTR) - Pointer auf eine optionale Stoproutine. Wenn dieser Tag
  1143.         nicht vorhanden ist, verfährt DeliTracker folgendermaßen:
  1144.             Interrupt stoppen (DTP_StopInt)
  1145.             Sound Cleanup (DTP_EndSnd)
  1146.             Song initialisieren (DTP_InitSnd)
  1147.         Ansonsten hat diese Routine die Aufgabe, einen evtl.
  1148.         spielenden Song anzuhalten und so zu initialisieren, daß
  1149.         dieser beim nächsten Starten des Interrupts von Anfang an
  1150.         zu spielen beginnt.
  1151.  
  1152.   DTP_Config (FPTR) - Pointer auf eine optionale Initialisierungsroutine.
  1153.         Diese wird nur einmal unmittelbar nach dem Laden des
  1154.         Players aufgerufen. Mögliche Anwendungen: Laden einer
  1155.         playerspezifischen Konfigurationsdatei.
  1156.  
  1157.   DTP_UserConfig (FPTR) - Pointer auf eine optionale Initialisierungs-
  1158.         routine. Diese wird nur dann aufgerufen, wenn der User den
  1159.         Player im Setupfenster anwählt und das 'Config' Gadget
  1160.         drückt. Mögliche Anwendungen: Öffnen eines Fensters zum
  1161.         Setzen weiterer Optionen wie z.B. Instrumentenpfad und
  1162.         Abspeichern einer playerspezifischen Konfigurationsdatei.
  1163.  
  1164.   DTP_SubSongRange (FPTR) - Dieser Tag sollte angegeben werden, wenn der
  1165.         Player MultiModule unterstützt. ti_Data zeigt dabei auf
  1166.         eine Routine, die als Returnwert in d0 die minimale und
  1167.         in d1 die maximale Subsongnummer zurückgeben muß.
  1168.         Hinweis: Wenn möglich sollte dieser Tag (evtl. zusammen
  1169.         mit DTP_SubSongTest) anstelle von DTP_NextSong/DTP_PrevSong
  1170.         verwendet werden.
  1171.  
  1172.   DTP_InitPlayer (FPTR) - Pointer auf eine optionale Initialsierungs-
  1173.         routine, die aufgerufen wird, wenn ein Modul erfolgreich
  1174.         geladen wurde. Tritt kein Fehler auf, liefert sie d0=0,
  1175.         ansonsten d0<>0. Hier muß die Allocation der Audiokanäle
  1176.         stattfinden! (DeliTracker stellt dafür eine eigene Routine
  1177.         zur Verfügung) Falls der Player Multi-Module unterstützt,
  1178.         muß hier dtg_SndNum(a5) auf die erste Subsongnummer gesetzt
  1179.         werden. Falls eine Routine für DTP_SubSongRange existiert,
  1180.         macht DeliTracker das automatisch (d.h. die Initialisierung
  1181.         von dtg_SndNum(a5) kann weggelassen werden).
  1182.  
  1183.   DTP_EndPlayer (FPTR) - Pointer auf eine optionale Cleanuproutine, die
  1184.         aufgerufen wird, wenn das Modul aus dem Speicher entfernt
  1185.         wird. Hier muß die Freigabe der Audiokanäle stattfinden!
  1186.         (DeliTracker stellt dafür eine eigene Routine zur
  1187.         Verfügung)
  1188.  
  1189.   DTP_InitSound (FPTR) - Pointer auf eine optionale Initialsierungsroutine.
  1190.         Diese muß das Modul initialisieren, so daß beim Starten des
  1191.         Interrupts der Song von Anfang an zu spielen beginnt.
  1192.  
  1193.   DTP_EndSound (FPTR) - Pointer auf eine optionale Cleanuproutine. Diese
  1194.         kann z.B. die Lautstärkeregister und die Audio-DMA
  1195.         rücksetzen.
  1196.  
  1197.   DTP_StartInt (FPTR) - Pointer auf eine Initialsierungsroutine, die
  1198.         existieren muß, wenn DTP_Interrupt nicht vorhanden ist.
  1199.         In diesem Fall muß hier der Sound gestartet werden.
  1200.  
  1201.   DTP_StopInt (FPTR) - Pointer auf eine Cleanuproutine, die existieren muß,
  1202.         wenn DTP_Interrupt nicht vorhanden ist. In diesem Fall muß
  1203.         hier der Sound gestoppt werden.
  1204.  
  1205.   DTP_Volume (FPTR) - Pointer auf eine Funktion, welche die Lautstärke neu
  1206.         setzt. Die Funktion wird aufgerufen, wenn die Volume neu
  1207.         gesetzt wird (Slider, ARexx) und beim Initialisieren des
  1208.         Moduls vor DTP_InitSnd. Die Mastervolume steht in
  1209.         dtg_SndVol(a5). Die Mastervolume ist dabei der maximale
  1210.         Volumewert. Die effektive Volume errechnet sich also
  1211.         durch: VOL_eff = (( dtg_Volume(a5) * modulevolume )>>6)
  1212.         Näheres siehe Beispielsourcen.
  1213.  
  1214.   DTP_Balance (FPTR) - Pointer auf eine Funktion, welche die Balance neu
  1215.         setzt. Die Funktion wird aufgerufen, wenn die Balance neu
  1216.         gesetzt wird (Slider, ARexx) und beim Initialisieren des
  1217.         Moduls vor DTP_InitSnd. Die Balance für die linken Kanäle
  1218.         steht in dtg_SndLBal(a5), für die rechten Kanäle in
  1219.         dtg_SndRBal(a5). Hinweis: Alle Player die Balance unterstützen
  1220.         können auch Volume! Man verwendet dann die gleiche Routine
  1221.         zum Setzen der Volume&Balance. Die linke Volume errechnet
  1222.         sich wie folgt: (( dtg_Volume(a5) * dtg_SndLBal(a5) )>>6)
  1223.         Entsprechendes gilt für rechts.
  1224.  
  1225.   DTP_Faster (FPTR) - Pointer auf eine Funktion, die den Abspielvorgang
  1226.         beschleunigt.
  1227.  
  1228.   DTP_Slower (FPTR) - Pointer auf eine Funktion, die den Abspielvorgang
  1229.         verlangsamt.
  1230.  
  1231.   DTP_NextPatt (FPTR) - Pointer auf eine Funktion, die den Patternzeiger
  1232.         um eins erhöht.
  1233.  
  1234.   DTP_PrevPatt (FPTR) - Pointer auf eine Funktion, die den Patternzeiger
  1235.         um eins erniedrigt.
  1236.  
  1237.   DTP_NextSong (FPTR) - Pointer auf eine Funktion, die Subsongnummer auf
  1238.         den nächsten Subsong setzt und diesen spielt.
  1239.         (Falls vorhanden)
  1240.  
  1241.   DTP_PrevSong (FPTR) - Pointer auf eine Funktion, die Subsongnummer auf
  1242.         den vorhergehenden Subsong setzt und diesen spielt.
  1243.         (Falls vorhanden)
  1244.  
  1245.   DTP_SubSongTest (FPTR) - (ab Version 1.35) Dieser Tag wird nur ausgewertet,
  1246.         wenn schon der Tag DTP_SubSongRange angegeben wurde. ti_Data
  1247.         zeigt dabei auf eine Routine, die als Returnwert in d0 einen
  1248.         Boolschen Wert zurückliefert. Dieser gibt an, ob der SubSong
  1249.         mit Nummer dtg_SndNum(a5) gültig ist (d0=0) oder nicht
  1250.         (d0<>0). Dieser Tag ist nur bei den Playern nötig, bei denen
  1251.         nicht jeder SubSong (innerhalb der durch DTP_SubSongRange
  1252.         festgelegten Grenzen) benutzt ist.
  1253.  
  1254.  
  1255.   8.4 DeliTracker support Funktionen
  1256.  
  1257.   DeliTracker stellt zur Erleichterung der Playeranpassung einige
  1258.   Funktionen zur Verfügung. Eine Funktion wird wie folgt aufgerufen:
  1259.  
  1260.     move.l    dtg_XXX(a5),a0
  1261.     jsr    (a0)
  1262.  
  1263.   Alle folgenden Funktionen außer dtg_SongEnd und dtg_SetTimer verwenden
  1264.   d0/d1/a0/a1 als Scratchregister. In a5 muß bei allen Aufrufen (außer bei
  1265.   dtg_SongEnd und dtg_SetTimer) die Base stehen. Derzeit existieren
  1266.   folgende Funktionen:
  1267.  
  1268.   dtg_GetListData
  1269.  
  1270.     SYNOPSIS
  1271.         memory size = dtg_GetListData(number)
  1272.         a0     d0              d0.l
  1273.  
  1274.     FUNCTION
  1275.         Liefert Adresse und Länge eines mit LoadFile() geladenen
  1276.         Files.
  1277.  
  1278.     INPUTS
  1279.         number - Nummer eines Files beginnend mit 0 für das vom
  1280.              User selektierte File.
  1281.  
  1282.     RESULT
  1283.         memory - ein Pointer auf die Startadresse des Files im
  1284.              Speicher oder NULL im Fehlerfall.
  1285.         size - Länge des Files in Bytes bzw. 0 im Fehlerfall.
  1286.  
  1287.  
  1288.   dtg_LoadFile
  1289.  
  1290.     SYNOPSIS
  1291.         success = dtg_LoadFile(name)
  1292.  
  1293.     FUNCTION
  1294.         Lädt und entpackt ggf. das angegebene File ins Chip-
  1295.         Memory. (Hinweis: diese Funktion ergänzt automatisch,
  1296.         falls das File mit dem angegebenen Namen nicht geöffnet
  1297.         werden konnte '.pp','.im' und '.xpk')
  1298.  
  1299.     INPUTS
  1300.         name - der Filename steht in einem internen Buffer (seine
  1301.                Adresse steht in dtg_PathArray)
  1302.  
  1303.     RESULT
  1304.         success - alles ok d0.l=0, sonst d0.l<>0.
  1305.  
  1306.  
  1307.   dtg_CopyDir
  1308.  
  1309.     SYNOPSIS
  1310.         dtg_CopyDir()
  1311.  
  1312.     FUNCTION
  1313.         Kopiert das Directory des von User angewählten Files an das
  1314.         Ende des Strings, auf den dtg_PathArray(a5) zeigt.
  1315.  
  1316.  
  1317.   dtg_CopyFile
  1318.  
  1319.     SYNOPSIS
  1320.         dtg_CopyFile()
  1321.  
  1322.     FUNCTION
  1323.         Kopiert den Filenamen des von User angewählten Files an das
  1324.         Ende des Strings, auf den dtg_PathArray(a5) zeigt.
  1325.  
  1326.  
  1327.   dtg_CopyString
  1328.  
  1329.     SYNOPSIS
  1330.         dtg_CopyString(string)
  1331.                    a0
  1332.  
  1333.     FUNCTION
  1334.         Kopiert den String, auf den das Register a0 zeigt, an das
  1335.         Ende des Strings, auf den dtg_PathArray(a5) zeigt.
  1336.  
  1337.     INPUTS
  1338.         string - der Pointer auf den anzuhängenden String steht
  1339.              in a0
  1340.  
  1341.  
  1342.   dtg_AudioAlloc
  1343.  
  1344.     SYNOPSIS
  1345.         success = dtg_AudioAlloc()
  1346.  
  1347.     FUNCTION
  1348.         Belegt alle Audiokanäle.
  1349.  
  1350.     RESULT
  1351.         success - alles ok d0.l=0, sonst d0.l<>0.
  1352.  
  1353.  
  1354.   dtg_AudioFree
  1355.  
  1356.     SYNOPSIS
  1357.         dtg_AudioFree()
  1358.  
  1359.     FUNCTION
  1360.         Gibt die mit dtg_AudioAlloc belegten Audiokanäle wieder
  1361.         frei.
  1362.  
  1363.  
  1364.   dtg_StartInt
  1365.  
  1366.     SYNOPSIS
  1367.         dtg_StartInt()
  1368.  
  1369.     FUNCTION
  1370.         Startet den Soundinterrupt. (Falls er nicht schon läuft.)
  1371.         Falls DTP_Interrupt existiert, startet DeliTracker einen
  1372.         Timerinterrupt, ansonsten wird DTP_StartInt aufgerufen.
  1373.  
  1374.  
  1375.   dtg_StopInt
  1376.  
  1377.     SYNOPSIS
  1378.         dtg_StopInt()
  1379.  
  1380.     FUNCTION
  1381.         Stoppt den Soundinterrupt. (Falls er nicht schon angehalten
  1382.         ist.) Falls DTP_Interrupt existiert, stoppt DeliTracker
  1383.         seinen Timerinterrupt, ansonsten wird DTP_StopInt
  1384.         aufgerufen.
  1385.  
  1386.  
  1387.   dtg_SongEnd
  1388.  
  1389.     SYNOPSIS
  1390.         dtg_SongEnd()
  1391.  
  1392.     FUNCTION
  1393.         Signalisiert DeliTracker, daß das Modul einmal komplett
  1394.         gespielt wurde. Diese Funktion verändert keine Register
  1395.         und darf auch von Interrupts aufgerufen werden.
  1396.  
  1397.  
  1398.   dtg_CutSuffix
  1399.  
  1400.     SYNOPSIS
  1401.         dtg_CutSuffix()
  1402.  
  1403.     FUNCTION
  1404.         Entfernt am Ende des Strings, auf den dtg_PathArray(a5)
  1405.         zeigt ggf. die Endung '.pp', '.im' oder '.xpk'
  1406.  
  1407.  
  1408.   dtg_SetTimer
  1409.  
  1410.     SYNOPSIS
  1411.         dtg_SetTimer()
  1412.  
  1413.     FUNCTION
  1414.         Programmiert den CIA-Timer mit dem Wert, der sich in
  1415.         dtg_Timer(a5) befindet. Diese Funktion verändert keine
  1416.         Register und darf auch von Interrupts aufgerufen werden.
  1417.  
  1418.  
  1419.   dtg_WaitAudioDMA
  1420.     
  1421.     SYNOPSIS
  1422.         dtg_WaitAudioDMA()
  1423.   
  1424.     FUNCTION
  1425.         Diese Funktion wartet eine bestimte Zeit, bevor sie 
  1426.         zurückkehrt. Sie darf nur verwendet werden, wenn die
  1427.         interne Timer-interrupt Routine verwendet wird. Die
  1428.         gewartete Zeit ist lange genug um neue Werte in die 
  1429.         Audioregister zu übernehmen. Verwenden sie diese 
  1430.         Routine anstatt der üblichen dbra Schleifen, bzw. 
  1431.         Rasterline warte Routinen. Diese Funktion verändert 
  1432.         keine Register.
  1433.     
  1434.  
  1435.   8.5 Tips zur Anpassung
  1436.  
  1437.   Der Player sollte den Zustand der LED unbeeinflußt lassen, da im
  1438.   Setupwindow eine entsprechende Funktion existiert.
  1439.  
  1440.   Diese kleine Checkliste für sollte für die Player/Custommodul Anpassung
  1441.   erfüllt werden, damit der Player systemkonform ist und einwandfrei
  1442.   funktioniert:
  1443.  
  1444.     [ ] ist die Checkroutine präzise genug ?
  1445.     [ ] werden die Audiokanäle richtig belegt und freigegeben ?
  1446.     [ ] wird aller allocierter Speicher freigegeben ?
  1447.     [ ] werden alle Locks wieder freigegeben ?
  1448.     [ ] enforcer und mungwall - Test bestanden ?
  1449.     [ ] werden alle denkbaren Fehler korrekt abgefangen ?
  1450.     [ ] wurde der Player mit 1.3, 2.0 und 3.0 getestet ?
  1451.     [ ] spielt der Player in allen Videomodi korrekt ?
  1452.  
  1453.   Problemecke:
  1454.  
  1455.   Symptom    mögliche Ursache            Beseitigung
  1456.  
  1457.   Absturz    a5 überschrieben
  1458.         Register nicht gesichert
  1459.         falsche oder zu späte Initialisierung
  1460.         Modul zu neu für den Player        präziserer Check
  1461.  
  1462.   klingt schräg Audiodaten nicht im Chipmem        Player ins Chipmem
  1463.         falsche Initialisierung
  1464.         Modul zu neu für den Player        präziserer Check
  1465.         Player benötigt bestimmte Werte in    zusätzliche
  1466.         einigen Registern            Initialisierung
  1467.         unverträglicher Videomodus
  1468.  
  1469.   kein Ton    Audio-DMA abgeschaltet
  1470.    bei >68000    Player schreibt direkt auf        Betriebssystem
  1471.         Interruptvektoren            benutzen
  1472.  
  1473.   fast keine    fehlerhaftes Interrupt-Handling        bei VBlank-IRQ:
  1474.   freie CPU-Zeit                    Z-Flag setzen
  1475.  
  1476.  
  1477. 9. DANKSAGUNGEN
  1478.  
  1479.   Unser besonderer Dank gilt folgenden Personen:
  1480.  
  1481.     unseren Testern Stefan Becker, Daniel, Börnie und Manfred für ihre
  1482.     Bugreports und guten Vorschläge.
  1483.  
  1484.     Armin Sander (Oktalyzer) und Carsten Schlote (Sonic Arranger) für
  1485.     die Anpassung Ihrer Soundsysteme.
  1486.  
  1487.     Jörg W. Schmidt für den Sourcecode von PlayFTM.
  1488.  
  1489.     Tomas Partl für seinen Player.
  1490.  
  1491.     DoIO für diverse Module, Demos und Diskmag-Werbung.
  1492.  
  1493.     allen auf IRC #amiga (Internet Relay Chat)
  1494.  
  1495.     Markus Illenseer und Christian Rattei für die Korrektur der Docs.
  1496.  
  1497.     Kevin Dackiw für die Verbesserung der NoisePacker Player und die
  1498.     Korrektur der englischen Docs.
  1499.  
  1500.     Florian Vorberger für viele nette Module und die Verbesserung
  1501.     einiger Player.
  1502.  
  1503.     U. Dominik Müller für XPK und seine dauernde Nörglerei :-)
  1504.  
  1505.     Colin Fox and Bruce Dawson für die phantastische req.library.
  1506.  
  1507.     Eric Kennedy für TstApp.rexx.
  1508.  
  1509.     und allen, die uns Replay-Routinen, Module oder eine Registration
  1510.     geschickt haben.
  1511.  
  1512.  
  1513.  
  1514.